package com.lazily.set_;


import java.util.HashSet;

/**
 * @Author:  GZQ
 * @date:  2025/5/5 16:47
 * @description: 案例
 * @version: 1.0
 */

@SuppressWarnings({"all"})
public class HashSet01 {
	// 程序入口
	public static void main(String[] args) {
		HashSet set = new HashSet();

		// 解读
		// 1. 在执行add方法后, 会返回一个boolean值
		// 2. 如果添加成功, 返回 true, 否则返回false
		// 3. 可以通过 remove 指定删除那个对象
		System.out.println(set.add("john")); // T
		System.out.println(set.add("mary")); // T
		System.out.println(set.add("john")); // F
		System.out.println(set.add("tom"));  // T
		System.out.println(set.add("jane")); // T

		set.remove("john");
		System.out.println("set = " + set); // 3个

		set = new HashSet();
		System.out.println("set = " + set);
		// 4 HashSet 不能添加相同的元素/数据
		set.add("lucy"); // 成功
		set.add("lucy"); // 失败
		set.add(new Dog("jack")); // 成功
		set.add(new Dog("jack")); // 成功
		System.out.println("set = " + set);

		// 在加深一下. 非常经典的面试题.
		// 需要看源码分析. ===> 看 add 时的底层机制
		set.add(new String("UFO"));//ok
		set.add(new String("UFO"));//加入不了.
		System.out.println("set=" + set);
	}
}


class Dog { // 定义了一个Dog类
	private String name;

	public Dog(String name) {
		this.name = name;
	}

	@Override
	public String toString() {
		return name;
	}
}